package smallfrench.moteur.noeuds;

import smallfrench.moteur.interp.Portee;
import smallfrench.moteur.interp.RObjet;
import smallfrench.moteur.interp.err.ExceptionRetourFonction;
import smallfrench.moteur.lexer.lexemes.Lexeme;

public class NRetourFonction extends Noeud {

	private final Noeud noeudRetour;

	/**
	 * @param t
	 * @param noeudRetour
	 */
	public NRetourFonction(Lexeme t, Noeud noeudRetour) {
		super(t);
		this.noeudRetour = noeudRetour;
	}

	/**
	 * Lève un nouveau {@link ExceptionRetourFonction}, avec la valeur de
	 * retour.
	 */
	@Override
	public RObjet evaluer(Portee pile) {
		throw new ExceptionRetourFonction(noeudRetour.evaluer(pile));
	}

	@Override
	public String toString() {
		return "retour (" + noeudRetour + ")";
	}

}
